'''
Description: 
Author: Zilu
Date: 2021-11-14 16:14:07
Version: 
LastEditTime: 2021-11-14 16:46:12
LastEditors: Zilu
'''

# 使用 psutil 模块可以实现监控系统信息
import psutil
psutil.cpu_count()
psutil.cpu_count(logical=False)

# 统计CPU的用户/系统/空闲时间
psutil.cpu_times()

# 再实现类似top命令的CPU使用率，每秒刷新一次，累计10次
for x in range(10):
    print(psutil.cpu_percent(interval=1, percpu=True))

# 获取物理内存和交换内存的信息
psutil.virtual_memory()
psutil.swap_memory()

# 获取磁盘信息
psutil.disk_partitions()    # opts中包含rw表示可读写，journaled表示支持日志。
psutil.disk_usage('/')

# 获取网络信息
psutil.net_io_counters() # 获取网络读写字节／包的个数
psutil.net_if_addrs()   # 获取网络接口信息
psutil.net_if_stats()   # 获取网络接口状态
psutil.net_connections()    # 当前网络连接信息

# 获取进程信息
psutil.pids()
p = psutil.Process(4892)   # 获取指定ID的进程
p.name()
p.exe() # 获取进程exe路径
p.cwd() # 进程工作目录
p.cmdline() # 进程启动的命令行
p.ppid()    # 父进程PID
p.parent()  # 父进程
p.children()    # 子进程列表
p.status()  # 进程状态
p.username()    # 进程用户名
p.create_time() # 进程创建时间
from datetime import datetime
datetime.fromtimestamp(p.create_time())
p.terminal()    # 进程终端（Windows没有）
p.cpu_times()   # 使用的cpu时间
p.memory_info() # 使用内存
p.open_files()  # 进程打开的文件
p.num_threads() # 进程的线程数量
p.connections() # 进程相关的网络连接
p.threads() # 进程所有线程信息
p.environ() # 进程环境变量
p.terminate()   # 结束进程

# psutil 还有个test()函数，可以模拟ps命令输出所有进程信息
psutil.test()

# psutil更多操作见官网 https://github.com/giampaolo/psutil

